package com.chhuang.core.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import javax.validation.constraints.NotEmpty;
import java.util.Collection;
import java.util.List;

/**
 * @ClassName InterfaceMapper
 * @Description Mapper 继承该接口后，无需编写 mapper.xml 文件，即可获得CRUD功能
 * @Author Darren Huang
 * @Date 2022/11/23 22:56
 * @Version 1.0
 */
public interface InterfaceMapper<T> extends BaseMapper<T> {
    /**
     * 根据 Wrapper 条件，判断是否存在记录，存在返回1，不存在为null
     *
     * @param queryWrapper 实体对象封装操作类
     * @return 是否存在记录
     */
    Integer select1Limit1(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

    /**
     * 根据 Wrapper 条件，判断是否存在记录， 存在true，不存在false
     * @param queryWrapper
     * @return
     */
    default boolean exists(Wrapper<T> queryWrapper){
        if(select1Limit1(queryWrapper)==null)
            return false;
        else
            return true;
    }

    /**
     * 批量插入
     * @param entityList 需要校验不能是空集合
     * @return int
     */
    void insertBatchSomeColumn(@NotEmpty Collection<T> entityList);
}
